/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.beans.indicator;

import java.beans.*;

/**
 *
 * @author FreeFrag
 */
public class HorizontalIndicatorBeanInfo extends SimpleBeanInfo {
    
    // Bean descriptor                          
    /*lazy BeanDescriptor*/
    private static BeanDescriptor getBdescriptor(){
        BeanDescriptor beanDescriptor = new BeanDescriptor  ( com.beans.indicator.HorizontalIndicator.class , null ); // NOI18N                              

    // Here you can add code for customizing the BeanDescriptor.

        return beanDescriptor;     }                         


    // Property identifiers                      
    private static final int PROPERTY_background = 0;
    private static final int PROPERTY_colorIndicator = 1;
    private static final int PROPERTY_criticalColor = 2;
    private static final int PROPERTY_cursor = 3;
    private static final int PROPERTY_diodeVisible = 4;
    private static final int PROPERTY_enabled = 5;
    private static final int PROPERTY_font = 6;
    private static final int PROPERTY_foreground = 7;
    private static final int PROPERTY_height = 8;
    private static final int PROPERTY_labelColor = 9;
    private static final int PROPERTY_largeTickInterval = 10;
    private static final int PROPERTY_maxCriticalValue = 11;
    private static final int PROPERTY_maximumSize = 12;
    private static final int PROPERTY_maxValue = 13;
    private static final int PROPERTY_minCriticalValue = 14;
    private static final int PROPERTY_minimumSize = 15;
    private static final int PROPERTY_minValue = 16;
    private static final int PROPERTY_name = 17;
    private static final int PROPERTY_preferredSize = 18;
    private static final int PROPERTY_size = 19;
    private static final int PROPERTY_tickColor = 20;
    private static final int PROPERTY_tickCount = 21;
    private static final int PROPERTY_title = 22;
    private static final int PROPERTY_titleColor = 23;
    private static final int PROPERTY_toolTipText = 24;
    private static final int PROPERTY_value = 25;
    private static final int PROPERTY_visible = 26;
    private static final int PROPERTY_width = 27;
    private static final int PROPERTY_x = 28;
    private static final int PROPERTY_y = 29;

    // Property array 
    /*lazy PropertyDescriptor*/
    private static PropertyDescriptor[] getPdescriptor(){
        PropertyDescriptor[] properties = new PropertyDescriptor[30];
    
        try {
            properties[PROPERTY_background] = new PropertyDescriptor ( "background", com.beans.indicator.HorizontalIndicator.class, "getBackground", "setBackground" ); // NOI18N
            properties[PROPERTY_colorIndicator] = new PropertyDescriptor ( "colorIndicator", com.beans.indicator.HorizontalIndicator.class, "getColorIndicator", "setColorIndicator" ); // NOI18N
            properties[PROPERTY_criticalColor] = new PropertyDescriptor ( "criticalColor", com.beans.indicator.HorizontalIndicator.class, "getCriticalColor", "setCriticalColor" ); // NOI18N
            properties[PROPERTY_cursor] = new PropertyDescriptor ( "cursor", com.beans.indicator.HorizontalIndicator.class, "getCursor", "setCursor" ); // NOI18N
            properties[PROPERTY_diodeVisible] = new PropertyDescriptor ( "diodeVisible", com.beans.indicator.HorizontalIndicator.class, "isDiodeVisible", "setDiodeVisible" ); // NOI18N
            properties[PROPERTY_enabled] = new PropertyDescriptor ( "enabled", com.beans.indicator.HorizontalIndicator.class, "isEnabled", "setEnabled" ); // NOI18N
            properties[PROPERTY_font] = new PropertyDescriptor ( "font", com.beans.indicator.HorizontalIndicator.class, "getFont", "setFont" ); // NOI18N
            properties[PROPERTY_foreground] = new PropertyDescriptor ( "foreground", com.beans.indicator.HorizontalIndicator.class, "getForeground", "setForeground" ); // NOI18N
            properties[PROPERTY_height] = new PropertyDescriptor ( "height", com.beans.indicator.HorizontalIndicator.class, "getHeight", null ); // NOI18N
            properties[PROPERTY_labelColor] = new PropertyDescriptor ( "labelColor", com.beans.indicator.HorizontalIndicator.class, "getLabelColor", "setLabelColor" ); // NOI18N
            properties[PROPERTY_largeTickInterval] = new PropertyDescriptor ( "largeTickInterval", com.beans.indicator.HorizontalIndicator.class, "getLargeTickInterval", "setLargeTickInterval" ); // NOI18N
            properties[PROPERTY_maxCriticalValue] = new PropertyDescriptor ( "maxCriticalValue", com.beans.indicator.HorizontalIndicator.class, "getMaxCriticalValue", "setMaxCriticalValue" ); // NOI18N
            properties[PROPERTY_maximumSize] = new PropertyDescriptor ( "maximumSize", com.beans.indicator.HorizontalIndicator.class, "getMaximumSize", "setMaximumSize" ); // NOI18N
            properties[PROPERTY_maxValue] = new PropertyDescriptor ( "maxValue", com.beans.indicator.HorizontalIndicator.class, "getMaxValue", "setMaxValue" ); // NOI18N
            properties[PROPERTY_minCriticalValue] = new PropertyDescriptor ( "minCriticalValue", com.beans.indicator.HorizontalIndicator.class, "getMinCriticalValue", "setMinCriticalValue" ); // NOI18N
            properties[PROPERTY_minimumSize] = new PropertyDescriptor ( "minimumSize", com.beans.indicator.HorizontalIndicator.class, "getMinimumSize", "setMinimumSize" ); // NOI18N
            properties[PROPERTY_minValue] = new PropertyDescriptor ( "minValue", com.beans.indicator.HorizontalIndicator.class, "getMinValue", "setMinValue" ); // NOI18N
            properties[PROPERTY_name] = new PropertyDescriptor ( "name", com.beans.indicator.HorizontalIndicator.class, "getName", "setName" ); // NOI18N
            properties[PROPERTY_preferredSize] = new PropertyDescriptor ( "preferredSize", com.beans.indicator.HorizontalIndicator.class, "getPreferredSize", "setPreferredSize" ); // NOI18N
            properties[PROPERTY_size] = new PropertyDescriptor ( "size", com.beans.indicator.HorizontalIndicator.class, "getSize", "setSize" ); // NOI18N
            properties[PROPERTY_tickColor] = new PropertyDescriptor ( "tickColor", com.beans.indicator.HorizontalIndicator.class, "getTickColor", "setTickColor" ); // NOI18N
            properties[PROPERTY_tickCount] = new PropertyDescriptor ( "tickCount", com.beans.indicator.HorizontalIndicator.class, "getTickCount", "setTickCount" ); // NOI18N
            properties[PROPERTY_title] = new PropertyDescriptor ( "title", com.beans.indicator.HorizontalIndicator.class, "getTitle", "setTitle" ); // NOI18N
            properties[PROPERTY_titleColor] = new PropertyDescriptor ( "titleColor", com.beans.indicator.HorizontalIndicator.class, "getTitleColor", "setTitleColor" ); // NOI18N
            properties[PROPERTY_toolTipText] = new PropertyDescriptor ( "toolTipText", com.beans.indicator.HorizontalIndicator.class, "getToolTipText", "setToolTipText" ); // NOI18N
            properties[PROPERTY_value] = new PropertyDescriptor ( "value", com.beans.indicator.HorizontalIndicator.class, "getValue", "setValue" ); // NOI18N
            properties[PROPERTY_visible] = new PropertyDescriptor ( "visible", com.beans.indicator.HorizontalIndicator.class, "isVisible", "setVisible" ); // NOI18N
            properties[PROPERTY_width] = new PropertyDescriptor ( "width", com.beans.indicator.HorizontalIndicator.class, "getWidth", null ); // NOI18N
            properties[PROPERTY_x] = new PropertyDescriptor ( "x", com.beans.indicator.HorizontalIndicator.class, "getX", null ); // NOI18N
            properties[PROPERTY_y] = new PropertyDescriptor ( "y", com.beans.indicator.HorizontalIndicator.class, "getY", null ); // NOI18N
        }
        catch(IntrospectionException e) {
            e.printStackTrace();
        }                          

    // Here you can add code for customizing the properties array.

        return properties;     }                     

    // EventSet identifiers                  
    private static final int EVENT_criticalValueListener = 0;
    private static final int EVENT_propertyChangeListener = 1;

    // EventSet array
    /*lazy EventSetDescriptor*/
    private static EventSetDescriptor[] getEdescriptor(){
        EventSetDescriptor[] eventSets = new EventSetDescriptor[2];
    
        try {
            eventSets[EVENT_criticalValueListener] = new EventSetDescriptor ( com.beans.indicator.HorizontalIndicator.class, "criticalValueListener", com.beans.indicator.event.CriticalValueListener.class, new String[] {"criticalValue"}, "addCriticalValueListener", "removeCriticalValueListener" ); // NOI18N
            eventSets[EVENT_propertyChangeListener] = new EventSetDescriptor ( com.beans.indicator.HorizontalIndicator.class, "propertyChangeListener", java.beans.PropertyChangeListener.class, new String[] {"propertyChange"}, "addPropertyChangeListener", "removePropertyChangeListener" ); // NOI18N
        }
        catch(IntrospectionException e) {
            e.printStackTrace();
        }                      

    // Here you can add code for customizing the event sets array.

        return eventSets;     }                 

    // Method identifiers                   

    // Method array 
    /*lazy MethodDescriptor*/
    private static MethodDescriptor[] getMdescriptor(){
        MethodDescriptor[] methods = new MethodDescriptor[0];                       

    // Here you can add code for customizing the methods array.
    
        return methods;     }                  

    private static java.awt.Image iconColor16 = null;                    
    private static java.awt.Image iconColor32 = null;
    private static java.awt.Image iconMono16 = null;
    private static java.awt.Image iconMono32 = null;                  
    private static String iconNameC16 = "/com/beans/indicator/resources/icon2.gif";                 
    private static String iconNameC32 = null;
    private static String iconNameM16 = null;
    private static String iconNameM32 = null;               

    private static final int defaultPropertyIndex = -1;               
    private static final int defaultEventIndex = -1;             

    
                      

    // Here you can add code for customizing the Superclass BeanInfo.

                     
	
    /**
     * Gets the bean's <code>BeanDescriptor</code>s.
     * 
     * @return BeanDescriptor describing the editable
     * properties of this bean.  May return null if the
     * information should be obtained by automatic analysis.
     */
    public BeanDescriptor getBeanDescriptor() {
	return getBdescriptor();
    }

    /**
     * Gets the bean's <code>PropertyDescriptor</code>s.
     * 
     * @return An array of PropertyDescriptors describing the editable
     * properties supported by this bean.  May return null if the
     * information should be obtained by automatic analysis.
     * <p>
     * If a property is indexed, then its entry in the result array will
     * belong to the IndexedPropertyDescriptor subclass of PropertyDescriptor.
     * A client of getPropertyDescriptors can use "instanceof" to check
     * if a given PropertyDescriptor is an IndexedPropertyDescriptor.
     */
    public PropertyDescriptor[] getPropertyDescriptors() {
	return getPdescriptor();
    }

    /**
     * Gets the bean's <code>EventSetDescriptor</code>s.
     * 
     * @return  An array of EventSetDescriptors describing the kinds of 
     * events fired by this bean.  May return null if the information
     * should be obtained by automatic analysis.
     */
    public EventSetDescriptor[] getEventSetDescriptors() {
	return getEdescriptor();
    }

    /**
     * Gets the bean's <code>MethodDescriptor</code>s.
     * 
     * @return  An array of MethodDescriptors describing the methods 
     * implemented by this bean.  May return null if the information
     * should be obtained by automatic analysis.
     */
    public MethodDescriptor[] getMethodDescriptors() {
	return getMdescriptor();
    }

    /**
     * A bean may have a "default" property that is the property that will
     * mostly commonly be initially chosen for update by human's who are 
     * customizing the bean.
     * @return  Index of default property in the PropertyDescriptor array
     * 		returned by getPropertyDescriptors.
     * <P>	Returns -1 if there is no default property.
     */
    public int getDefaultPropertyIndex() {
        return defaultPropertyIndex;
    }

    /**
     * A bean may have a "default" event that is the event that will
     * mostly commonly be used by human's when using the bean. 
     * @return Index of default event in the EventSetDescriptor array
     *		returned by getEventSetDescriptors.
     * <P>	Returns -1 if there is no default event.
     */
    public int getDefaultEventIndex() {
        return defaultEventIndex;
    }

    /**
     * This method returns an image object that can be used to
     * represent the bean in toolboxes, toolbars, etc.   Icon images
     * will typically be GIFs, but may in future include other formats.
     * <p>
     * Beans aren't required to provide icons and may return null from
     * this method.
     * <p>
     * There are four possible flavors of icons (16x16 color,
     * 32x32 color, 16x16 mono, 32x32 mono).  If a bean choses to only
     * support a single icon we recommend supporting 16x16 color.
     * <p>
     * We recommend that icons have a "transparent" background
     * so they can be rendered onto an existing background.
     *
     * @param  iconKind  The kind of icon requested.  This should be
     *    one of the constant values ICON_COLOR_16x16, ICON_COLOR_32x32, 
     *    ICON_MONO_16x16, or ICON_MONO_32x32.
     * @return  An image object representing the requested icon.  May
     *    return null if no suitable icon is available.
     */
    public java.awt.Image getIcon(int iconKind) {
        switch ( iconKind ) {
        case ICON_COLOR_16x16:
            if ( iconNameC16 == null )
                return null;
            else {
                if( iconColor16 == null )
                    iconColor16 = loadImage( iconNameC16 );
                return iconColor16;
            }
        case ICON_COLOR_32x32:
            if ( iconNameC32 == null )
                return null;
            else {
                if( iconColor32 == null )
                    iconColor32 = loadImage( iconNameC32 );
                return iconColor32;
            }
        case ICON_MONO_16x16:
            if ( iconNameM16 == null )
                return null;
            else {
                if( iconMono16 == null )
                    iconMono16 = loadImage( iconNameM16 );
                return iconMono16;
            }
        case ICON_MONO_32x32:
            if ( iconNameM32 == null )
                return null;
            else {
                if( iconMono32 == null )
                    iconMono32 = loadImage( iconNameM32 );
                return iconMono32;
            }
	default: return null;
        }
    }
}
